home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 November: Tool Chest / Dev.CD Nov 98 TC.toast / What's New? / Development Kits / Multiprocessing SDK / Sample Code / PowerFrax / sources / HFDocMandelbrot.c next >
Encoding:
C/C++ Source or Header  |  1998-09-25  |  1.8 KB  |  56 lines  |  [TEXT/CWIE]

  1. //**********************************************************************************//
  2. //                                                                                    //
  3. // PowerFrax                                                                        //
  4. // ---------                                                                        //
  5. //                                                                                    //
  6. //    Motorola compiler command line:                                                    //
  7. //        mcc HFDocMandelbrot.c -c -i ::includes: -O3                                    //
  8. //                                                                                    //
  9. //    © DayStar Digital, Inc. 1995-1996                                                //
  10. //    All Rights Reserved.                                                            //
  11. //                                                                                    //
  12. //**********************************************************************************//
  13.  
  14. #include "HFDocMandelbrot.h"
  15.  
  16. //==================================================================================//
  17. long main( void *params )
  18. {
  19. // Generates one fractal scan.                                                        //
  20. // This is the MPWorkFunctionProc called from the tasks.                            //
  21. // When using the Multiprocessing API Library this function is called from fTask()    //
  22. // in HFMultiprocessingPPC.c. When the Multiprocessing API Library is not present    //
  23. // it is called directly from PowerFrax.                                            //
  24.  
  25.     double    lzc = ((sMandelbrotParamsPtr) params)->zc;
  26.     double    lzd = ((sMandelbrotParamsPtr) params)->zd;
  27.     double    lstep = ((sMandelbrotParamsPtr) params)->step;
  28.     double    lescape = ((sMandelbrotParamsPtr) params)->escape;
  29.     long    lwidth = ((sMandelbrotParamsPtr) params)->width;
  30.     char*    lresults = ((sMandelbrotParamsPtr) params)->results;
  31.     long i;
  32.  
  33.     for (i = 0; i < lwidth; i++)
  34.     {
  35.         double za = 0.0;
  36.         double zb = 0.0;
  37.         double ze = 0.0;
  38.         long level = 0;
  39.         while( level < 256 && ze < lescape )
  40.         {
  41.             double za2 = za * za;
  42.             double zb2 = zb * zb;
  43.             double zt = za * zb;
  44.             za = za2 - zb2 + lzc;
  45.             zb = zt + zt + lzd;
  46.             ze = za2 + zb2;
  47.             level++;
  48.         }
  49.         *lresults++ = level - 1;
  50.         lzc += lstep;
  51.     }
  52.     return( 0 );
  53. }
  54.  
  55. //==================================================================================//
  56.